import axios from 'axios'
import { Toast } from 'vant'
import router from '../router'

axios.defaults.baseURL = process.env.NODE_ENV == 'development' ? '//backend-api-01.newbee.ltd/api/v1' : '//backend-api-01.newbee.ltd/api/v1'
axios.defaults.withCredentials = true
axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'
axios.defaults.headers['token'] = localStorage.getItem('token') || ''
axios.defaults.headers.post['Content-Type'] = 'application/json'

axios.interceptors.response.use(res => {
  //若响应头内的data不为object，则视为服务器异常，这里直接通过Promise.reject抛出错误
  if(typeof res.data !== 'object') {
    Toast.fail('服务端异常！')
    return Promise.reject(res)
  }
  if(res.data.resultCode != 200){
    //若有data, 并且resultCode不等于200，就表示请求通过了，但是响应失败
    if(res.data.message){
      Toast.fail(res.data.message)
    }
    //本项目返回码为416，表示未登录，所以这里在未登录的情况下跳转到login登录页面
    if(res.data.resultCode == 416){
      router.push({path: '/login'})
    }
    //最后通过Promise.reject抛出，前端可以通过链式调用catch捕获错误
    return Promise.reject(res.data)
  }
  //其他情况一律返回data数据
  return res.data
})

export default axios